#!/bin/sh
set -e

[ $# = 2 ] || { echo >&2 "$0: wrong number of arguments"; exit 1; }

src=$1
dst=$2

dirs_=
dirs_music=music
dirs_sound=sounds
dirs_httt='Heir_To_The_Throne*'
dirs_ei='Eastern_Invasion*'
dirs_sotbe='Son_Of_The_Black_Eye*'
dirs_tdh='The_Dark_Hordes*'
dirs_trow='The_Rise_of_Wesnoth*'
dirs_devel='tools wmlxgettext'
dirs_editor='editor*'
dirs_tutorial='tutorial Tutorial'
dirs_mp=multiplayer
dirs_locales=translations
dirs_junk='scenario-test.cfg convert.pl README man'

# must be last in $parts !
dirs_coredata='data images'

parts="sound httt ei sotbe tdh trow devel editor tutorial mp junk coredata"
if [ "x$dst" != "x--zip" ]
then
    parts="music locales $parts"
fi

for p in $parts
do
    [ "x$dst" = "x--zip" ] || rm -rf $dst/wesnoth-$p
    eval dirs=\${dirs_$p}
    findexpr=-false
    for d in $dirs
    do
	findexpr="$findexpr -o -name $d"
    done

    # locate files and dirs to move
    things=$(cd $src && find $findexpr)

    if [ "x$dst" = "x--zip" ]
    then
	rm -f $src/wesnoth-$p.zip
	(cd $src && zip -Drm wesnoth-$p.zip $things)
    else
	for d in $(cd $src && find $findexpr)
	do
	    mkdir -p $dst/wesnoth-$p/$(dirname $d)
	    mv $src/$d $dst/wesnoth-$p/$(dirname $d)
	done
    fi

    # be sure there are only dirs left now
    test -z "$(cd $src && find \( $findexpr \) -not -type d | tee /dev/stderr)"

    # remove now-empty dirs
    (cd $src && rm -rf $things)

done
